ヘッダーをスキップ
Oracle TimesTen In-Memory Database Java開発者およびリファレンス・ガイド
リリース6.0
B25766-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

TimesTen Javaのデモ

Java環境を構成した後、 install_dir/demo/tutorial/javaディレクトリのTimesTen Javaデモ・アプリケーションをコンパイルして実行することによって、すべて正しく設定されているかどうかを確認できます。

TimesTenのデモ・スキーマ

TimesTen Javaのデモは、単純な注文処理データベースを想定したTimesTenのデモ・スキーマで動作するよう設計されています。データ・ストアをTimesTenのデモ・スキーマに移入するには、install_dir/demo/tutorial/datfiles/input0.datを実行します。詳細は、「TimesTen Javaのデモの実行」を参照してください。input0.datファイルでは、次の表が作成されます。

TimesTenのデモの機能

TimesTen Javaのデモには、level1.java、level2.java、level3.java、level4.java、XlaLevel1.java、XlaLevel2.javaおよびXlaLevel3.javaという名前が付けられています。すべてのレベルのデモで、データ・ストアへの直接接続およびクライアント接続がサポートされています。

level1デモでは、DriverManagerインタフェースを使用してデータ・ストアに接続し、準備済のINSERT文およびSELECT文を作成して新しい顧客データをxyz.customer表に挿入した後、この表の内容を表示します。また、input1.datファイルのすべてのデータがこの表にロードされるまでINSERTを実行し、SELECTを実行して、stdoutに結果セットをフェッチして印刷した後、データ・ストアから切断します。

level2デモでは、TimesTenDataSourceインタフェースを使用してデータ・ストアに接続し、準備済のINSERT文、UPDATE文、DELETE文およびSELECT文を作成してxyz.product表に対して製品データの挿入、更新、削除および表示を行います。input2.datファイルのすべてのデータがこの表にロードされるまでINSERTを実行します。また、DELETEを実行して重複する製品データを削除した後、UPDATEを実行して表の製品価格を10%値上げします。ttCkptプロシージャを実行して、データ・ストアのチェックポイント処理をディスクに対して実行します。SELECTを実行して、stdoutに結果セットをフェッチして印刷した後、データ・ストアから切断します。

level3デモでは、TimesTenDataSourceインタフェースを使用してデータ・ストアに接続し、準備された文を作成してinput3.datファイルの注文データに対する注文処理操作を実行します。また、データファイルの各注文品目に対して次のトランザクションを実行します。

TimesTen Javaのデモのコンパイル

Javaのデモをコンパイルするには、Javaのデモ・ディレクトリに移動し、build.xmlファイルに対してANTを実行します。ANTを使用しない場合は、javacコマンドを使用して各デモをコンパイルします。次に例を示します。

> cd /TimesTen/tt60/demo/tutorial/java 
> javac *.java 

TimesTen Javaのデモの実行

Javaのデモを実行する場合は、次に示すようにinput0.datファイルでSQL文を実行して、デモ・スキーマを作成または再作成する必要があります。各デモでは、DSN名を指定する必要があります。DSNは、データ・ストアへの直接接続またはクライアント接続に使用できます。

levelデモの実行

すべてのlevelデモには、次のコマンド構文があります。

demoname [-t] [-d | -c] {DSN} 
demoname -h | -help 
  -h | -help    print usage and exit 
  -d            connect using direct driver (default) 
  -c            connect using client driver 
  -t            enable JDBC tracing 
  DSN           name of the data store 
例1.2

アプリケーションによるデータ・ストアへの様々な接続方法については、『Oracle TimesTen In-Memory Databaseアーキテクチャ概要』のアプリケーションによるデータ・ストアへの接続方法に関する章を参照してください。この例では、DMdemoデータ・ストアへの直接ドライバ接続を使用して、level1デモおよびlevel2デモを実行します。level2デモの実行時には、JDBC追跡を有効にします。その後、CSdemoデータ・ストアへのクライアント接続を使用して、level3デモを実行します。

注意: 各デモを実行する前に、input0.datファイルを実行してデータ・ストアのデモ・スキーマを再作成する必要があります。
> ttIsql -f ../datfiles/input0.dat DMdemo 
...... output 
> java level1 DMdemo 
...... output 
> ttIsql -f ../datfiles/input0.dat DMdemo 
...... output 
> java level2 -t DMdemo 
...... output 
> ttIsqlCS -f ../datfiles/input0.dat CSdemo 
...... output 
> java level3 -c CSdemo 
...... output 
 

データ・ストアに接続できない場合は、指定したDSN名が設定されていない可能性があります。『Oracle TimesTen In-Memory Databaseオペレーション・ガイド』のデータソース名に関する項を参照してください。

XlaLevelデモの実行

注意:XLAイベント・ハンドラの作成」で説明するJMS/XLA APIを使用する場合は、XlaLevelデモのみを参照してください。

JMS/XLAでは、XLAアプリケーションで使用するデータ・ストア名およびその他のパラメータは、「XLAトピック」で説明するXLAトピックの形式で指定されます。XlaLevelデモでは、install_dir/demo/tutorial/javaディレクトリのjmsxla.xmlファイルからXLAトピックを取得します。jmsxla.xmlファイルのトピックは、事前定義されたRunData_tt60データ・ストアおよびその他のデフォルトのパラメータがXlaLevelデモで使用されるよう構成されています。jmsxla.xmlファイルを編集して、他のトピックを指定したり、既存のトピックの設定を変更することができます。

すべてのXlaLevelデモでは、オプションのトピック名を使用できます。

XlaLevel1を実行する構文は次のとおりです。

   XlaLevel1 [topic]

topicは、デフォルトでjmsxla.xmlファイルに事前に指定されているLevel1Demoトピックです。

XlaLevel2を実行する構文は次のとおりです。

   XlaLevel2 [topic [bookmark]]

topicはデフォルトでLevel2Demobookmarkはデフォルトでbookmarkです。

XlaLevel3を実行する構文は次のとおりです。

   XlaLevel3 [topic [bookmark [table]]]

topicはデフォルトでLevel3Demobookmarkはデフォルトでbookmarkです。また、tableはデフォルトでtblです。

XlaLevel1デモまたはXlaLevel2デモを実行する場合は、input0.datファイルでSQL文を実行してデモ・スキーマを作成または再作成する必要があります。XlaLevel1デモおよびXlaLevel2デモでは、xyz.customer表の変更を監視します。

XlaLevel1デモの実行時に、別のシェルでlevel1.javaデモを実行してxyz.customer表を更新できます。

例1.3

デフォルトのトピックを使用してXlaLevel1.javaデモを実行するには、1つのシェルに次のように入力します。

> ttIsql -f ../datfiles/input0.dat RunData_tt60 
...... output 
> java XlaLevel1 
...... detected changes to the xyz.customer table 
 

別のシェルに次のように入力します。

> java level1 RunData_tt60 ...... output

XlaLevel1デモからの出力には、xyz.customer表に対する検出された変更が示されます。

jmsxla.xmlファイルに新しいトピックを作成する場合、XlaLevel1.javaデモを実行する際にトピックを指定できます。たとえば、MyTopicという新しいトピックを作成する場合、次のコマンドを使用してXlaLevel1.javaデモを起動します。

> java XlaLevel1 MyTopic

XlaLevel2デモによって、xyz.customer表への変更をコマンドラインからSQLの形式で入力するように求められます。トランザクションをコミットした後、表に対する検出された変更が表示されます。

例1.4

デフォルトのトピックおよびブックマークを使用してXlaLevel2.javaデモを実行するには、次のように入力します。

> ttIsql -f ../datfiles/input0.dat RunData_tt60 
...... output 
> java XlaLevel2 
+++ Using default topic Level2Demo and default bookmark bookmark 
+++ create session 
+++ create topic 
+++ createDurableSubscriber 
+++ using connection string
'DSN=RunData_tt60;ExclAccess=0;Logging=1;LogPurge=0;Overwrite=0' 
+++ connecting to
jdbc:timesten:direct:DSN=RunData_tt60;ExclAccess=0;Logging=1;LogPurge=0;Overwrit
e=0 
+++ turning off autocommit 
You can now enter SQL commands.  You should enter 
either DML (such as inserts, updates, or deletes), 
or DDL (such as CREATE SEQUENCE). 
For instance, try: 
  create sequence s minvalue 1000 
  insert into xyz.customer values(s.nextVal,'us','Bob','nowhere') 
  commit 
After each SQL command you enter, the demo tries 
to get and display any JMS/XLA updates. 
Type "quit" to exit the demo, or "help" 
to see this message again. 
NOTE: autocommit is turned off, so you will 
have to enter "commit" to see your updates. 
Enter SQL: create sequence s minvalue 1000 
+++ create sequence s minvalue 1000 
Enter SQL: insert into xyz.customer values(s.nextVal,'us','Bob','nowhere') 
+++ insert into xyz.customer values(s.nextVal,'us','Bob','nowhere') 
Enter SQL: insert into xyz.customer values(s.nextVal,'us','Bob','nowhere') 
+++ insert into xyz.customer values(s.nextVal,'us','Bob','nowhere') 
Enter SQL: commit 
+++ commit 
>>> got a CREATE SEQUENCE message 
  CYCLE=true  INCREMENT=1  MAX_VALUE=9223372036854775807  MIN_VALUE=1000 
  NAME=S  OWNER=ASPIN  __COMMIT=false  __CONTEXT=(null)  __FIRST=true 
  __REPL=false  __TYPE=16  __mtyp=null  __mver=1144080 
>>> got a INSERT message 
  ADDRESS=nowhere  CUST_NUM=1000  NAME=Bob  REGION=us     __NULLS= 
  __TYPE=10  __mtyp=null  __mver=1146360 
>>> got a INSERT message 
  ADDRESS=nowhere  CUST_NUM=1001  NAME=Bob  REGION=us     __COMMIT=true 
  __NULLS=  __TYPE=10  __mtyp=null  __mver=1147248 
Enter SQL: quit 
+++ cleaning up 
+++ Subscriber close 
+++ Producer.close 
+++ done 
+++ shutting down... 
 

XlaLevel3デモによって、変更および監視する表を指定するように求められます。表がRunData_tt60 データ・ストアに存在しない場合は、作成されます。

例1.5

デフォルトのトピックLevel3Demoおよびブックマークbkmk使用してXlaLevel3.javaデモを実行し、新しい表tblを作成するには、次のように入力します。

> java XlaLevel3 Level3Demo bkmk tbl 
+++ topic=Level3Demo, bookmark=bkmk, table=tbl 
May 11, 2005 3:32:26 PM
com.timesten.dataserver.jmsxla.SimpleInitialContextFactory getInitialContext 
INFO: Using configuration file jmsxla.xml 
+++ create session 
+++ create topic 
May 11, 2005 3:32:27 PM com.timesten.dataserver.jmsxla.DestinationImpl <init> 
FINE: Properties for topic Level3Demo:{xlaPrefetch=100, name=Level3Demo,
connectionString=DSN=RunData_tt60} 
+++ createDurableSubscriber 
May 11, 2005 3:32:27 PM com.timesten.dataserver.jmsxla.XlaSubscriber <init> 
FINE: Making XLA subscription, connstr=DSN=RunData_tt60, bookmark=bkmk,
prefetch=100, ackMode=1 May 11, 2005 3:32:27 PM
com.timesten.dataserver.jmsxla.MessageConsumerImpl createXlaSubscriber 
FINE: Creating MessageConsumer with connection string=DSN=RunData_tt60,
bookmark=bkmk May 11, 2005 3:32:27 PM
com.timesten.dataserver.jmsxla.XlaSubscriber start 
FINE: Starting XLA subscription 
+++ using connection string 'DSN=RunData_tt60' 
+++ connecting to jdbc:timesten:direct:DSN=RunData_tt60 
+++ turning off autocommit 
table tbl already exists 
+++ {call ttXlaSubscribe('tbl', 'bkmk')} 
You can now enter SQL commands.  You should enter either DML (such as inserts,
updates, or deletes), or DDL (such as CREATE SEQUENCE). 
For instance, try: 
  create sequence s minvalue 1000 
  insert into tbl values(s.nextVal) 
  call ttApplicationContext('inserted something') 
  commit 
After each SQL command you enter, the demo tries to get and display any JMS/XLA
updates. 
Type "quit" to exit the demo, or "help" 
to see this message again. 
NOTE: autocommit is turned off, so you will have to enter "commit" to see your
updates. 
Enter SQL: create sequence s minvalue 1000 
+++ create sequence s minvalue 1000 
Enter SQL: insert into tbl values(s.nextVal) 
+++ insert into tbl values(s.nextVal) 
Enter SQL: call ttApplicationContext('inserted something') 
+++ call ttApplicationContext('inserted something') 
Enter SQL: commit 
+++ commit 
>>> got a CREATE TABLE message 
  NAME=TBL  OWNER=ASPIN  _A_INPRIMARYKEY=null  _A_NULLABLE=null 
  _A_OUTOFLINE=null  _A_PRECISION=null  _A_SCALE=null  _A_SIZE=null 
  __COMMIT=null  __FIRST=null  __TYPE=null  __mtyp=null  __mver=null 
>>> got a CREATE SEQUENCE message 
  CYCLE=true  INCREMENT=1  MAX_VALUE=9223372036854775807  MIN_VALUE=1000 
  NAME=S  OWNER=ASPIN  __COMMIT=false  __CONTEXT=(null)  __FIRST=true 
  __REPL=false  __TYPE=16  __mtyp=null  __mver=385368 
>>> got a INSERT message 
  A=1000  __NULLS=B  __TYPE=10  __mtyp=null  __mver=386576 
>>> got a COMMIT ONLY message 
  __COMMIT=true  __CONTEXT=inserted something  __FIRST=false 
  __REPL=false  __TYPE=13  __mtyp=null  __mver=386880 Enter SQL: create index ix
on tbl(a) 
+++ create index ix on tbl(a) 
Enter SQL: commit 
+++ commit 
>>> got a CREATE INDEX message 
  COLUMNS=A  HASH_PAGES=0  INDEX_METHOD=T  INDEX_TYPE=R  IXNAME=IX 
  TBLNAME=TBL  TBLOWNER=ASPIN  UNIQUE=false  __COMMIT=true 
  __CONTEXT=(null)  __FIRST=true  __REPL=false  __TYPE=3  __mtyp=null 
  __mver=392904 
Enter SQL: drop index ix 
+++ drop index ix 
Enter SQL: insert into tbl values(s.nextVal) 
+++ insert into tbl values(s.nextVal) 
Enter SQL: insert into tbl values(s.nextVal) 
+++ insert into tbl values(s.nextVal) 
Enter SQL: update tbl set a=a+10 
+++ update tbl set a=a+10 
Enter SQL: commit 
+++ commit 
>>> got a DROP INDEX message 
  INDEX_NAME=IX  OWNER=ASPIN  TABLE_NAME=TBL  __COMMIT=false 
  __CONTEXT=(null)  __FIRST=true  __REPL=false  __TYPE=4  __mtyp=null 
  __mver=398776 
>>> got a INSERT message 
  A=1001  __NULLS=B  __TYPE=10  __mtyp=null  __mver=399472 
>>> got a INSERT message 
  A=1002  __NULLS=B  __TYPE=10  __mtyp=null  __mver=400112 
>>> got a UPDATE message 
  A=1010  _A=1000  __NULLS=_B;B  __TYPE=11  __UPDCOLS=A  __mtyp=null 
  __mver=400712 
>>> got a UPDATE message 
  A=1011  _A=1001  __NULLS=_B;B  __TYPE=11  __UPDCOLS=A  __mtyp=null 
  __mver=401256 
>>> got a UPDATE message 
  A=1012  _A=1002  __COMMIT=true  __NULLS=_B;B  __TYPE=11  __UPDCOLS=A 
  __mtyp=null  __mver=401800 
Enter SQL: quit 
+++ cleaning up 
+++ Subscriber close 
May 11, 2005 3:35:04 PM com.timesten.dataserver.jmsxla.XlaSubscriber
tableUnsubscribe 
FINE: Unsubscribing from table TBL 
+++ Producer.close 
+++ done 
+++ shutting down... 

TimesTen Javaのデモ・プログラムの実行の問題

次のようなエラー メッセージを受け取ることがあります。

java.lang.UnsatisfiedLinkError:no ttJdbcCS 
 

または

java.lang.UnsatisfiedLinkError: no ttJdbc in java.library.path

LD_LIBRARY_PATHが適切に設定されていません。libttJdbc.soを検索して、LD_LIBRARY_PATHにそのディレクトリを追加します。

setenv LD_LIBRARY_PATH install_dir/lib

TimesTen Javaのデモ・プログラムのコンパイルでの問題

次のようなエラー メッセージを受け取ることがあります。

java.lang.ClassNotFoundException:com.timesten.jdbc.TimesTenDriver 
 

CLASSPATHが適切に設定されていません。クラスのアーカイブ・ファイルを検索し、それがCLASSPATHに設定されていることを確認します。次に例を示します。

setenv CLASSPATH install_dir/lib/classes14.jar

いずれかのデモ('level1'など)で定義されているクラスに対してClassNotFoundExceptionが表示される場合は、現行のディレクトリがCLASSPATHに含まれることを確認します。次に例を示します。

setenv CLASSPATH install_dir/lib/classes14.jar:.